// 因为要往 Vue 构造函数的原型链 prototype 上挂在一个属性，方便它的实例去调用
import Vue from "vue";
// 引入 axios 模块
import axios from "axios";

// 请求发出前，先走这个请求拦截
axios.interceptors.request.use(config => {
  // config 是 axios 的默认配置，但是我们可以基于 axios 默认配置，添加一些属性
  // 我们需要在每次发送请求是，检查 sessionStorage 中，是否存在用户登录信息（token）
  // 如果存在，我们就将它加到请求头中（config.headers）
  const token = window.sessionStorage.getItem("token");
  if (token) {
    config.headers.token = token;
  }
  return config;
});

// 请求回来之后，先走这个响应拦截
axios.interceptors.response.use(res => {
  return res.data;
});

// $ 是为了区分它是一个内部属性
Vue.prototype.$http = axios;
